package com.jubotech.framework.util;

/**
 * Class工具类
 * @author xiaoxx
 * @date 2019年5月27日 下午10:45:53
 */
public class ClassNameUtil {

    /**
     * 获取调用的类名
     * 
     * @return String
     */
    public static String getClassName() {
        StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
        StackTraceElement e = stacktrace[2];
        String className = e.getClassName();
        return className;
    }

    /**
     * 获取调用的方法名
     * 
     * @return String
     */
    public static String getMethodName() {
        StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
        StackTraceElement e = stacktrace[2];
        String methodName = e.getMethodName();
        return "当前运行的类：" + e.getClassName() + "\n当前执行的方法：" + methodName + "\n当前执行的行数：" + e.getLineNumber();
    }

    /**
     * 当前执行的文件名
     * @return
     */
    public static String getFileName() {
        StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
        StackTraceElement e = stacktrace[2];
        String methodName = e.getFileName();
        return methodName;
    }

    /**
     * 当前执行的行数
     * @return
     */
    public static int getLineNumber() {
        StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
        StackTraceElement e = stacktrace[2];
        int line = e.getLineNumber();
        return line;
    }

    //public static void main(String[] args) {
    //    System.out.println("当前运行的类："+getClassName());
    //    System.out.println("当前执行的方法："+getMethodName());
    //    System.out.println("当前文件名："+getFileName());
    //    System.out.println("当前执行的行数："+getLineNumber());
    //}
}
